import request from '../../utils/request'
// pages/detail/detail.js
Page({
  // 播放器
  player: null,

  /**
   * 页面的初始数据
   */
  data: {
    // 播放状态
    isPlay: true,
    // 歌曲id
    songId: 0,
    // 歌曲信息
    songDetail: {},
    // 播放地址
    songUrl: '',
  },
  // 切换上一首、下一首事件
  handleSwitch(e) {
    let type = e.currentTarget.id;
    // console.log(type)
    // 触发上一首或下一首事件
    getApp().globalData.customEvent.emit("NextOrPerv", {
      songId: this.data.songId,
      type
    })
  },
  // 点击播放或者暂停按钮，切换播放状态
  handleMusicPlay() {
    this.setData({
      isPlay: !this.data.isPlay
    })
    this.playOrPauseMusic()
  },
  // 点击播放 或者 暂停歌曲
  playOrPauseMusic() {
    let isPlay = this.data.isPlay
    isPlay ? this.player.play() : this.player.pause();
  },
  /**
   * 生命周期函数--监听页面加载
   */
  async onLoad(options) {
    // console.log(options)
    // 初始化 songId
    const {
      songId
    } = options;
    this.setData({
      songId,
    })
    await this.getSongDetail()
    await this.getSongUrl()
    if (!this.player) {
      // 判断有没有音频播放管理器对象，如果没有直接创建，如果没有直接创建修改src和title
      this.player = wx.getBackgroundAudioManager()
    }
    this.player.src = this.data.songUrl;
    this.player.title = this.data.songDetail.name;

    // 这里有系统内置的播放状态，  我们的按钮播放要与他同步
    this.player.onPlay(() => {
      this.setData({
        isPlay: true
      })
    })
    this.player.onPause(() => {
      this.setData({
        isPlay: false
      })
    })
    // 绑定歌曲自然播放结束
    this.player.onEnded(() => {
      // 播放完成就是切换下一首
      getApp().globalData.customEvent.emit("NextOrPerv", {
        songId: this.data.songId,
        type: 'next'
      })
    })
    // 监听 recommend 页面传入的 下一首歌曲的id
    getApp().globalData.customEvent.on('switchId', (targetId) => {
      this.getSongDetailAndUrlAndPlay(targetId);
    });
  },
  // 根据传入的歌曲 id 获取歌曲详情和歌曲的 url，并播放
  async getSongDetailAndUrlAndPlay(songId) {
    const detailRs = await request('/song/detail', {
      ids: songId
    });
    const urlRs = await request('/song/url', {
      id: songId
    });

    // 更新数据
    this.setData({
      songDetail: detailRs.songs[0].al,
      songUrl: urlRs.data[0].url,
      songId
    });

    // 设置播放器的 src 和 title，播放器就可以播放指定的音乐了
    this.player.src = this.data.songUrl;
    this.player.title = this.data.songDetail;
  },
  // 获取歌曲播放信息
  async getSongUrl() {
    const rs = await request('/song/url', {
      id: this.data.songId
    });
    if (rs.code === 200) {
      this.setData({
        songUrl: rs.data[0].url
      })
    }
  },
  // 获取歌曲详情
  async getSongDetail() {
    const data = await request('/song/detail', {
      ids: this.data.songId
    })
    if (data.code === 200) {
      this.setData({
        songDetail: data.songs[0].al
      })
      // 获取歌曲信息 立马展示当前页面的头部信息
      wx.setNavigationBarTitle({
        title: data.songs[0].al.name
      })
    }
    // console.log('data', data)
  },
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})